home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / morse / staton / isr_init.txt < prev    next >
Text File  |  1994-04-21  |  4KB  |  246 lines

  1. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;
  2. ;   COPYRIGHT (C) 1994 KEN STATON    ;
  3. ;         ALL RIGHTS RESERVED        ;
  4. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;
  5.  
  6. ;
  7. ; SET INTERRUPT VECTOR TABLE
  8. ;
  9.  
  10.     .ORG 0000H
  11.     LJMP INIT               ; RESET VECTOR
  12.  
  13.  
  14.     .ORG 0003H
  15.     LJMP EXT0               ; EXTERNAL INTERRUPT 0 ROUTINE
  16.  
  17.  
  18.     .ORG 000BH 
  19.     LJMP TIM0               ; TIMER 0 INTERRUPT
  20.  
  21.  
  22.     .ORG 0013H
  23.     LJMP EXT1               ; EXTERNAL INTERRUPT 1 ROUTINE
  24.  
  25.       
  26.     .ORG 001BH
  27.     LJMP TIM1               ; TIMER 1 INTERRUPT
  28.  
  29.  
  30.     .ORG 0023H
  31.     LJMP SER_INT            ; SERIAL INTERRUPT
  32.  
  33. ;
  34. ; TIMER 0 ISR
  35. ;
  36.  
  37. TIM0    NOP
  38.     RETI
  39.  
  40. ;
  41. ; TIMER 1 ISR
  42. ;
  43.  
  44. TIM1    NOP
  45.     RETI
  46. ;
  47. ; EXTERNAL 0 ISR
  48. ; Not re-entrant.
  49. ; Modifies R4 = MODE
  50. ; Modifies RL & RH = Random number seed
  51. ;
  52.  
  53. EXT0    
  54.     CLR    IEC0        ;DISABLE EXT0 INTS
  55.     PUSH    PSW        ;SAVE STATUS!
  56.     PUSH    ACC        ;SAVE ACC
  57.     PUSH    R6        ;SAVE R6
  58.  
  59.     MOV    RL,TL1        ;Set new random seed based on T1
  60.     MOV    RH,TH1
  61.  
  62.     MOV    R6,#DEBOUNCE    ;Debounce switch delay
  63.     DJNZ    R6,$
  64.  
  65.     LCALL    WAITSEC        ; PUT DELAY BEFORE OPTION LIST...    
  66.  
  67. SEL0    MOV    A,#IDX_G    ;5 char groups
  68.     LCALL    DO_SAYIT
  69.     LCALL    WAITSEC
  70.     JNB    KEY,SEL1
  71.     MOV    R4,#GRP
  72.     LJMP    SEL_EXIT
  73.  
  74. SEL1    MOV    A,#IDX_R    ;Random chars
  75.     LCALL    DO_SAYIT
  76.     LCALL    WAITSEC
  77.     JNB    KEY,SEL2
  78.     MOV    R4,#RAN
  79.     LJMP    SEL_EXIT
  80.  
  81. SEL2    MOV    A,#IDX_S    ;Sequence chars
  82.     LCALL    DO_SAYIT
  83.     LCALL    WAITSEC
  84.     JNB    KEY,SEL3
  85.     MOV    R4,#SEQ
  86.     LJMP    SEL_EXIT
  87.  
  88. SEL3    MOV    A,#IDX_T    ;Talk toggle
  89.     LCALL    DO_SAYIT
  90.     LCALL    WAITSEC
  91.     JNB    KEY,SEL4
  92.     CPL    SPEAK
  93.     LJMP    SEL_EXIT
  94.  
  95. SEL4    MOV    A,#IDX_5    ;Farnsworth 16@5wpm
  96.     LCALL    DO_SAYIT
  97.     LCALL    WAITSEC
  98.     JNB    KEY,SEL5
  99.     MOV    FSPD,#(WPM16/2)
  100.     MOV    CSPD,#(WPM2/2)
  101.     MOV    DLY_B4,#WPM5DB
  102.     MOV    DLY_AR,#WPM5DA
  103.     LJMP    SEL_EXIT
  104.  
  105. SEL5    MOV    A,#IDX_1    ;Farnsworth 18@13wpm
  106.     LCALL    DO_SAYIT
  107.     LCALL    WAITSEC
  108.     JNB    KEY,SEL6
  109.     MOV    FSPD,#(WPM18/2)
  110.     MOV    CSPD,#(WPM9/2)
  111.     MOV    DLY_B4,#WPM13DB
  112.     MOV    DLY_AR,#WPM13DA
  113.     LJMP    SEL_EXIT
  114.  
  115. SEL6    MOV    A,#IDX_2    ;Farnsworth 23@20wpm
  116.     LCALL    DO_SAYIT
  117.     LCALL    WAITSEC
  118.     JNB    KEY,SEL7
  119.     MOV    FSPD,#(WPM23/2)
  120.     MOV    CSPD,#(WPM16/2)
  121.     MOV    DLY_B4,#WPM20DB
  122.     MOV    DLY_AR,#WPM20DA
  123.     LJMP    SEL_EXIT
  124.  
  125.  
  126. SEL7    MOV    A,#IDX_X    ;Exit, no changes
  127.     LCALL    DO_SAYIT
  128.     LCALL    WAITSEC
  129.     JB    KEY,SEL_EXIT
  130.     LJMP    SEL0
  131.  
  132. SEL_EXIT
  133.     POP    R6        ;RESTORE R6
  134.     POP    ACC        ;RESTORE ACC
  135.     POP    PSW        ;RESTORE STATUS
  136.     SETB    IEC0
  137.     RETI
  138.  
  139. ;    
  140. ; EXTERNAL 1 ISR
  141. ;
  142.  
  143. EXT1    NOP
  144.     RETI
  145.  
  146. ;
  147. ; SERIAL ISR
  148. ;
  149.  
  150. SER_INT
  151.     RETI
  152.  
  153. ;
  154. ; *************** END ISR's *****  END ISR's ******************
  155. ;
  156.  
  157. ;
  158. ; WAITSEC actually waits 0.5 sec
  159. ; Modifies ACC and R6
  160. ;
  161. WAITSEC
  162.     MOV    A,#QSECDLY    ; 0.25 Sec
  163. QSEC0    MOV     R6,#ONE_MS
  164.     DJNZ    R6,$
  165.     DJNZ    ACC,QSEC0
  166.  
  167.     MOV    A,#QSECDLY    ; 0.25 Sec
  168. QSEC1    MOV     R6,#ONE_MS
  169.     DJNZ    R6,$
  170.     DJNZ    ACC,QSEC1
  171.     
  172.     RET
  173.  
  174. INIT    
  175. ;
  176. ; system status initialization
  177. ;
  178.  
  179.     SETB    SPEAK        ; TALK ON
  180.     SETB    CODE        ; CODE ON
  181.     MOV    R4,#RAN        ; RANDOM CHAR MODE
  182.  
  183. #IFNDEF    F18            ; use 5@16 as default, unless
  184.                 ; assembled with '-dF18=1'
  185.     MOV    FSPD,#(WPM16/2)    ; 16 WPM element timing
  186. #ELSE
  187.     MOV    FSPD,#(WPM18/2)    ; 18 WPM element timing
  188. #ENDIF
  189.  
  190.     MOV    CSPD,#(WPM2/2)    ; 5 WPM character rate
  191.  
  192.     MOV    DLY_B4,#WPM5DB    ; Set delay before speaking
  193.     MOV    DLY_AR,#WPM5DA    ; Set delay after speaking
  194.  
  195.  
  196. ;
  197. ; INITIAL RANDOM SEED
  198. ;
  199.  
  200.     MOV    RL,#27        ; RN = 2781
  201.     MOV    RH,#81
  202.     MOV    PL,RL
  203.     MOV    PH,RH
  204.  
  205. ;
  206. ; PORT PIN CONFIGURATION
  207. ;
  208.  
  209.     MOV P1,#0FFH            ; SET PORT 1 (1 out enables input)
  210.     MOV P3,#0FFH            ; SET HIGH TO ALLOW ALTERNATE FUNCTIONS
  211.  
  212.  
  213.     MOV SP,#SP_INIT         ; SET STACK POINTER 
  214. ;
  215. ; IP - INTERRUPT PRIORITY REGISTER
  216. ;
  217.     MOV IPC,#00000000B               ; ALL LOW PRIORITY
  218.  
  219.     MOV     TMOD,#00010000B ; TIMER ONE 16 bit
  220.     MOV     TCON,#01000000B ; TIMER ONE ON, TIMER ZERO OFF, LOW LEVEL INTERRUPTS
  221.     MOV     TH1,#221        ;timer/cntr 1 H byte
  222.     MOV     TL1,#0          ;timer/cntr 1 L byte
  223.     MOV     PCON,#00000000B
  224.     MOV     SCON,#50H       ;Single Proc; mode 1.
  225.  
  226.  
  227. ;
  228. ; INITIAL INTERRUPT SOURCES
  229. ; IE - INTERRUPT ENABLE REGISTER
  230. ;
  231.     MOV IEC,#10000001B      ; Global enable         IE.7
  232.                 ; Reserved        IE.6
  233.                 ; Reserved        IE.5
  234.                 ; disABLE SERIAL INTS   IE.4
  235.                 ; disable TIMER1 INTS    IE.3
  236.                 ; disable EXT1 INTS    IE.2
  237.                 ; disable TIMER0    IE.1
  238.                 ; ENABLE EXT0 INTS    IE.0
  239.  
  240. ;    MOV    IEC,#00000000B
  241.  
  242. ;
  243. ; END INITIALIZATION
  244. ;
  245.  
  246.